package com.vogue.supplymall.account.domain.service;

import java.util.List;

import com.vogue.supplymall.account.domain.dto.RegistDTO;
import com.vogue.supplymall.account.domain.model.User;
import com.vogue.supplymall.common.domain.dto.OrganInfo;
import com.vogue.supplymall.match.domain.model.MatchOrgan;

/**
 * Created by 崔岳 on 2017-12-1.
 */
public interface UserService extends BaseService<User, Long> {

	/**
	 * 注册开通新用户 
	 * @param userdto
	 * @return	返回开通的账号（一串随机数字6位起步）
	 */
	public String registUser(RegistDTO userdto);
	
	/**
	 * 验证手机号是否为空闲的 <br>
	 * 
	 * @param tel	手机号码
	 * @return	true : 系统中未包含可以进行注册  
	 * 			false : 已经使用了不能进行注册
	 */
	public boolean telIsFree(String tel);
	
	/**
	 * 修改用户密码<br>
	 * 
	 * @param userid	用户id
	 * @param pwd		修改的新密码
	 * 
	 */
	public void updatepwd(Long userid, String pwd);
	
	/**
	 * 设置登录用户的默认登录机构(门店/配送中心)<br>
	 * 
	 * @param organid	机构id
	 */
	public OrganInfo defaultOrgan(Long organid);
	
	/**
	 * 根据供应链系统id和平台唯一码id来确定一个用户<br>
	 * 
	 * @param matchId	供应链系统数据id
	 * @param syscodeId	平台唯一码id
	 * @return
	 */
	public User getUserByMatchId(String matchId, Long syscodeId);
	/**
	 *根据matchIds和sysCodeId得到用户信息
	 */
	public List<User> findUserByMS(String matchIds,Long sysCodeId);
	/**
	 *根据sysCodeId得到用户信息
	 */
	public List<User> findUserBySys(Long sysCodeId);
	/**
	 *根据tel和sysCodeId得到用户信息
	 */
	public List<User> findUserByTS(String tel,Long sysCodeId);
	/**
	 * 验证用户手机号的唯一性
	 */
	public List<User> findUserByTel(String tels);
	
	/**
	 * 改变用户的注册手机号
	 * 
	 * @param tel 新手机号
	 */
	public void telchange(String tel);
	
	/**
	 * 更新用户的头像地址
	 * 
	 * @param url
	 */
	public void headimgchange(String url);
	
	/**
	 * 注册时候生成默认的机构
	 * @param organname 名称
	 * @param organinfo 简介
	 * @param pid	上级id
	 * @param syscodeid	系统编号id
	 * @param type	类型 1：企业 2：门店 3：配送中心 4：仓库
	 * @return
	 */
	public MatchOrgan saveDefaultOrgan(String organname, String organinfo, Long pid, Long syscodeid, Integer type);

	/**
	 * 根据用户id和平台唯一码id来确定一个用户
	 * @param userId	供应链系统数据id
	 * @param syscodeId	平台唯一码id
	 * @return
	 */
	public User getUserById(Long userId, Long syscodeId);
}
